Traditional software upgrades on mobile devices are typically performed through an Over the Air (“OTA”) mechanism. The OTA upgrade mechanism requires a large infrastructure and network. The OTA upgrade mechanism places limitations on the number of devices that can be upgraded at once, and thus software upgrades are allowed only in batches. Performance of the software upgrades through OTA mechanism depends on the speed of the data connection available to the device and user. For devices and users with moderate data speeds, this can result in an inordinately long upgrade process. Depending on the reliability of the data connection available, OTA software upgrades may be frequently interrupted. Furthermore, OTA software upgrades may require a device to download over 250 MB of data. This results in significant bandwidth cost to the user when the OTA software upgrade is downloaded through existing 3G or 4G cellular data connection.
The traditional software upgrade process also presents issues for the engineering community or the developer community. Typically, traditional software upgrade process performed by the engineering community involves downloading a 400-600 MB file from a server to a device. After upgrading the software of the device, a user would be required to set non-volatile memory items and operating system (“OS”) properties, each of which requires a reboot of the device. These operations are time consuming and require the device to restart every time these settings are changed. Furthermore, traditional software upgrade process used by the engineering community often requires extra accessories, such as computers or USB cables. To test a feature that may be under development, engineering users or developers are often required to make many customizations to the devices, such as setting different flex items, OS properties, or pushing binaries to the mobile devices. These customizations in turn involve a lot of manual effort and time to replicate on a different mobile device.